import DrawConditionTest from './drawConditionTest.js'

/**
 * 运行平局条件测试
 */
export default class DrawTestRunner {
  constructor() {
    this.test = new DrawConditionTest()
  }

  /**
   * 运行所有平局条件测试
   */
  async runTests() {
    console.log('🚀 开始运行平局条件测试...')
    console.log('=' * 60)
    
    try {
      const result = this.test.runAllTests()
      
      if (result) {
        console.log('🎉 所有平局条件测试通过！')
        console.log('✅ 平局功能已正确实现')
        console.log('📋 测试覆盖：')
        console.log('   - 空棋盘不是平局')
        console.log('   - 部分填充棋盘不是平局')
        console.log('   - 完全填充棋盘是平局')
        console.log('   - 混合填充棋盘是平局')
        console.log('   - 边界情况处理')
      } else {
        console.log('❌ 平局条件测试失败')
      }
      
      return result
    } catch (error) {
      console.error('💥 测试运行出错:', error)
      return false
    }
  }

  /**
   * 验证平局条件在游戏中的集成
   */
  validateGameIntegration() {
    console.log('🔍 验证平局条件在游戏中的集成...')
    
    // 模拟游戏状态
    const databus = new DataBus()
    databus.initBoard()
    
    // 模拟填充棋盘直到平局
    let moveCount = 0
    const maxMoves = 15 * 15 // 225个位置
    
    for (let i = 0; i < 15; i++) {
      for (let j = 0; j < 15; j++) {
        databus.board[i][j] = (i + j) % 2 === 0 ? 1 : 2
        moveCount++
        
        // 检查是否达到平局条件
        if (moveCount === maxMoves) {
          const isDraw = databus.checkDraw()
          console.assert(isDraw, '棋盘完全填充后应该是平局')
          console.log('✓ 游戏集成验证通过：棋盘完全填充后正确识别为平局')
          return true
        }
      }
    }
    
    return false
  }
}

// 如果直接运行此文件
if (typeof window !== 'undefined' || typeof GameGlobal !== 'undefined') {
  const runner = new DrawTestRunner()
  runner.runTests().then(success => {
    if (success) {
      runner.validateGameIntegration()
    }
  })
} 